<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    function Person (name, age) {
        this.name = name;
        this.age = age;
    }

    // a. new 关键子做了什么
    // 1.创建一个新的对象obj
    // 2.将此对象的原型指向该构造函数
    // 3.将构造函数的this指向obj
    // 4.构造函数的返回值如果是对象就正常处理，否则就忽略

    // b. 实现一个new
    function myNew(fn, ...args) {
        const obj = {};
        obj.__proto__ = fn.prototype;
        const res = fn.call(obj, ...args);
        return res instanceof Object ? res : obj;
    }
</script>
</body>
</html>